Management and prioritization of media item downloading

ABSTRACT

The disclosed embodiments relate generally to the downloading of media items. The media items may include, for example, audio, video, image, or podcast data. In accordance with one embodiment, two or more media items may be concurrently downloaded. In accordance with another embodiment, a user may control the downloading of each of the media items, as desired. More particularly, the user may choose to download, pause, or resume downloading one or more media items identified in the list of media items. In other words, the user may alter the download status of any of the items in the list of media items. In addition, the user may re-prioritize the order in which the media items in the list or a subset thereof are to be downloaded.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/048,621, filed Mar. 15, 2011 and entitled “MANAGEMENT OFPRIORITIZATION OF MEDIA ITEM DOWNLOADING,” which is hereby incorporatedherein by reference, which is in turn a divisional application of U.S.patent application Ser. No. 12/723,616, filed Mar. 12, 2010 and entitled“MANAGEMENT OF PRIORITIZATION OF MEDIA ITEM DOWNLOADING,” which ishereby incorporated herein by reference, which in turn is a continuationof U.S. patent application Ser. No. 11/519,980, filed Sep. 11, 2006 andentitled “MANAGEMENT OF PRIORITIZATION OF MEDIA ITEM DOWNLOADING,” whichis hereby incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to management of media asset downloading,and more particularly, to media asset downloading in a client-serverenvironment.

2. Description of the Related Art

Traditionally, music has been purchased at music stores or musicdepartments of larger stores. A consumer will visit the music store ordepartment and manually browse for albums or compact discs (CDs) ofinterest. Often, the music in the music store or department iscategorized by genre, and then indexed by artist. For example, genre caninclude rock, country, pop, soul, jazz, etc. After the consumer selectsan album or CD of interest, the consumer proceeds to a check-outregister to pay for the album or CD being purchased.

In recent years music delivery or distribution over the Internet hasbecome popular. Due to the advances in efficient file formats, such asMP3 and MPEG4, the size of media files have become small enough to maketheir download via the Internet practical. Also, technological advanceshave led to higher-speed Internet connections and lower cost of memory.The combination of these advances make downloading media files, such asfor music and videos, manageable and not too time consuming. Normally,client-side programs assist a user with interaction via the Internetwith a server computer that stores available media files. In this way, auser of a client-side program is able to browse, preview, purchaseand/or download available media files over the Internet. Theseoperations can be referred to as media operations.

Given that media operations are bandwidth-intensive, the user canexperience delays if earlier media operations are slow to complete. Forexample, the download of a media file to a client can take at leastseveral minutes, and during this period, the user may want to performanother media action (e.g., browse). However, the subsequent mediaoperation must await the completion of the download operation. Delays ofthis sort are bothersome to users and tend to reduce user satisfaction.

Thus, there is a need for media operations such as downloading to beprocessed in a manner that enhances user satisfaction.

SUMMARY

The disclosed embodiments relate generally to the downloading of mediaitems. The media items may include, for example, audio, video, image, orpodcast data. In accordance with one embodiment, two or more media itemsmay be downloaded concurrently. In accordance with another embodiment, auser may control the downloading of each of the media items, as desired.

In accordance with one embodiment, the media items being downloaded areidentified in a list of media items. More particularly, each entry inthe list of media items may identify a media item, as well as itscorresponding download status (e.g., eligible to download, downloading).A download priority indicating an order in which the corresponding mediaitem is to be downloaded may be identified explicitly or implicitly(e.g., via its placement in the list).

In accordance with another embodiment, two or more media items may beconcurrently downloaded. A list of two or more media items is identifiedor obtained. A priority of the two or more media items is ascertained.Two or more media items in the list of media items are concurrentlydownloaded according to the ascertained priority. As a media itemcompletes downloading, the downloading of a next prioritized media itemmay be automatically initiated.

In accordance with yet another embodiment, the list of media items ismaintained internally. In addition, the list of media items may beviewed by a user via a graphical user interface. The graphical userinterface can be presented to the user at a client (client machine). Inone embodiment, the graphical user interface is presented to the user byan application program that runs on the client.

In accordance with yet another embodiment, a user may control thedownloading of each item in the list of media items. More particularly,the user may choose to download, pause, or resume downloading one ormore media items identified in the list of media items. In other words,the user may alter the download status of any of the items in the listof media items. In addition, the user may re-prioritize the order inwhich the media items in the list or a subset thereof are to bedownloaded.

In accordance with yet another embodiment, a method for concurrentlydownloading media items can, for example, include the operations of:obtaining or identifying a list of media items, the list of media itemsincluding two or more media items; ascertaining a priority of the two ormore media items; concurrently downloading two or more media items inthe list of media items according to the ascertained priority; pausingthe downloading of at least one of the two or more media items beingdownloaded, the pausing being at a pause position of the at least one ofthe two or media items being paused; and resuming the downloading of theat least one previously paused media item from the pause position.

In accordance with yet another embodiment, a non-transitory computerreadable medium including at least computer program code forconcurrently downloading media items. The computer readable medium can,for example, include at least: computer program code for obtaining oridentifying a list of media items, the list of media items including twoor more media items; computer program code for ascertaining a priorityof the two or more media items; computer program code for concurrentlydownloading two or more media items in the list of media items accordingto the ascertained priority; computer program code for pausing thedownloading of at least one of the two or more media items beingdownloaded, the pausing being at a pause position of the at least one ofthe two or media items being paused; and computer program code forresuming the downloading of the at least one previously paused mediaitem from the pause position.

In accordance with yet another embodiment, an apparatus adapted forconcurrently downloading media items can, for example, include at least:a display, a processor, and a memory. The apparatus can be configuredto: (i) obtain or identify a list of media items to be downloaded to arecipient computing device, the list of media items including two ormore media items; (ii) ascertain a priority of the two or more mediaitems; and (iii) concurrently download two or more media items in thelist of media items according to the ascertained priority.

The invention can be implemented in numerous ways, including as amethod, system, device, apparatus, graphical user interface, or computerreadable medium. Several embodiments of the invention are discussedbelow.

Other aspects and advantages of the invention will become apparent fromthe following detailed description taken in conjunction with theaccompanying drawings which illustrate, by way of example, theprinciples of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention will be readily understood by the following detaileddescription in conjunction with the accompanying drawings, wherein likereference numerals designate like structural elements, and in which:

FIG. 1 is a block diagram of a media purchase system according to oneembodiment of the invention.

FIG. 2 is a screen shot of a representative application program windowthat displays a list of media items for use in concurrent downloading inaccordance with one embodiment of the invention.

FIG. 3 is a screen shot of a representative application program windowthat illustrates the capability of the user to control the concurrentdownloading process in accordance with one embodiment of the invention.

FIG. 4 is a screen shot of a representative application program windowthat illustrates the list of media items upon completing a purchase of amedia item from an online media store in accordance with one embodimentof the invention.

FIG. 5 is a process flow diagram illustrating a method of performingconcurrent downloading of media assets in accordance with one embodimentof the invention.

FIG. 6 is a process flow diagram illustrating a method of pausing thedownloading of media assets in accordance with one embodiment of theinvention.

FIG. 7 is a process flow diagram illustrating a method of resuming thedownloading of a media asset that was previously paused in accordancewith one embodiment of the invention.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

The present invention relates to management and prioritization of mediaasset (i.e., media item) downloading. More particularly, the disclosedembodiments relate to media asset downloading in a client-serverenvironment. A media asset can, for example, be a podcast episode,television episode, audio, video, or image data.

Embodiments of various aspects of the invention are discussed below withreference to FIGS. 1-7. However, those skilled in the art will readilyappreciate that the detailed description given herein with respect tothese figures is for explanatory purposes as the invention extendsbeyond these limited embodiments.

One aspect of the invention pertains to a system and method fordownloading media items over a network. Those media items that aredownloaded may include, for example, media items that are purchased froman online media store. In order to purchase a media item from the onlinemedia store, a potential purchaser can search and browse throughnumerous media items that are available for purchase. Upon purchasing amedia item, the media item is included in a list of items to bedownloaded. Each of the media items in the list is typically downloadedone at a time. The order in which the media items are downloaded may bethe order in which the purchaser purchased the media items. However, theorder in which the media items are downloaded need not be the same asthe order in which the purchaser purchased the media items.Unfortunately, the purchaser cannot control the downloading of the mediaitems individually. For example, upon canceling the downloading, thedownloading of all of the media items in the list is cancelled. Thedisclosed embodiments enable a user to actively manage and control thedownloading of media items in a media list.

The content for each media item in the list of media items can bedownloaded over the network to the purchaser. The content for the mediaitem may then be encrypted for the purchaser's use and stored on thepurchaser's machine. Thereafter, the purchaser can make use of the mediaitem (e.g., play the media item). However, the use of the media item canstill be limited. For example, only up to a predetermined number usermachines can be authorized to use the media item, or only up to apredetermined number of compact disc copies can be made of a grouping orcollection of media items (e.g., a playlist).

FIG. 1 is a block diagram of a media purchase system 100 according toone embodiment of the invention. The media purchase system 100 includesa media commerce server 102. The media commerce server 102 coordinatesreview and/or purchase of media items through on-line transactions.On-line transactions to purchase media items is also referred to aselectronic commerce (e-commerce). The media purchase system 100 alsoincludes a client 104. Typically, the media purchase system 100 wouldinclude a plurality of different clients 104. Each client 104 includes amedia player 108. The media player 108 is an application program (e.g.,software application) that operates on the client 104, which is acomputing device. The client 104 is coupled to the media commerce server102 through a data network 106. Hence, any of the clients 104 caninteract with the media commerce server 102 to review and/or purchasemedia items. In one embodiment, the data network 106 includes at least aportion of the Internet. The clients 104 can vary with application butgenerally are computing devices that have memory storage. Often, theclients 104 are personal computers or other computing devices that arecapable of storing and presenting media to their users.

The media purchase system 100 also includes a media storage server 110and a media store 112. The media storage server 110 represents a remotestorage server that couples to the data network 106. The media store 112provides mass storage of the numerous media items that are available forpurchase via the media purchase system 100. Once purchased, the mediaitems can be accessed from the media store 112 over the data network 106by way of the media storage server 110.

More particularly, the media purchase system 100 allows a user of theclient 104 to utilize the media player 108 to browse, search or sortthrough a plurality of media items that can be purchased from the mediacommerce server 102. The media player 108 may also allow the user topreview a media clip of the media items. In the event that the user ofthe media player 108 desires to purchase a particular media item, theuser (via the media player 108) and the media commerce server 102 engagein an on-line commerce transaction in which the user pays for accessrights to the particular media item. In one embodiment, a credit cardassociated with the user is credited for the purchase amount of theparticular media item.

In the media purchase system 100 shown in FIG. 1, the media items arestored in the media store 112 and retrieved via a download manager 114of the media storage server 110. Hence, the media commerce server 102need not burden its resources to deliver any of the media items that maybe purchased to the client 104. Instead, on purchasing a particularmedia item, the download manager 114 adds the media item to a list ofmedia items to be downloaded. In addition to purchased media items,other media items such as podcast episodes that have been subscribed tomay be automatically added to the list of media items. Similarly,non-purchased media items such as podcast episodes can be added to thelist of media items via the client 104. The download manager 114 canthen download the media items in the list of media items. In accordancewith one embodiment, the download manager concurrently downloads two ormore media items. In this regard, the download manager 114 obtains themedia content corresponding to the particular media item from the mediastore 112 and downloads such content through the data network 106 to theclient 104. The downloaded media content can then be stored on theclient 104. In one embodiment, the downloaded media content is stored onthe client 104 as received. In another embodiment, the downloaded mediacontent is transcrypted from one encryption key to another encryptionkey before persistent storage on the client 104. In still anotherembodiment, the downloaded media content is encrypted as received at theclient 104 but is decrypted and then re-encrypted before persistentstorage on the client 104. Thereafter, the media player 108 can present(e.g., play) the media content at the client 104.

In accordance with one embodiment, the download manager 114 achievesconcurrent downloading by establishing a different HTTP connection foreach media item being downloaded. More particularly, the downloadmanager 114 generates a different HTTP request for each downloadoperation. The download manager 114 may manage a pre-determined maximumnumber of concurrent download operations. While the download manager 114may ascertain a relevant connection speed, the download manager 114 neednot obtain such additional data.

The connections through the data network 106 between the media commerceserver 102, the client 104 and the media storage server 110 can bethrough secure connections, such as Secure Sockets Layer (SSL). Further,the media content may be stored at the client 104 in an encryptedmanner.

As discussed in greater detail below, in accordance with one embodiment,a window that displays a list of media items being managed by thedownload manager 114 may be presented on a display device of the client104. In one embodiment, the window is presented to the user by anapplication program that runs on the client.

In accordance with one embodiment, the user may choose to access thelist of media items to be downloaded. For instance, from the onlinemedia store, the user may ascertain whether the list contains items tobe downloaded. Moreover, the user may also easily ascertain the numberof items in the list. As one example, the online media store mayindicate via a graphical user interface that there are three items inthe list of media items to be downloaded. Such a graphical userinterface may be presented, for example when the list includes one ormore items.

FIG. 2 is a screen shot of a representative application program windowthat displays a list of media items to be downloaded in accordance withone embodiment of the invention. In this example, the list of mediaitems to be downloaded includes three media items. Each media item inthe list of media items may include a variety of information. Forinstance, as shown in FIG. 2, a kind column 202 including the kind(i.e., type) of media item is provided. For instance, the type of mediaitem may be an online store purchase or a podcast. Moreover, the type ofmedia item may indicate whether the media item is audio or video, music,television episode, etc. The type of media item may be indicated by anicon or other visual display. In this example, an icon indicates thateach of the three items in the list of media items are podcast episodes.Each media item may be identified by name in a name column 204, asshown. In addition, a download status associated with each media itemmay be provided in a status column 206. For instance, the downloadstatus may indicate that the media item is eligible (i.e., waiting) tobe downloaded, that the media item is being downloaded, that thedownloading of the media item has been paused, or that an error hasoccurred. In this example, the download status of each of the mediaitems is “stopped” (i.e., paused). A media item that has completeddownloading is no longer presented in the list of media items. In otherembodiments, a media item that has completed downloading may have acompleted status.

As downloading of media items in the list of media items completes,those media items that have completed downloading may be automaticallyremoved from the list. A media item may be added to the list of mediaitems automatically in accordance with a variety of rules or settings.For instance, when a user has subscribed to a particular podcast, anepisode of the podcast may be automatically added to the list of mediaitems. A user may also choose to add a media item to the list of mediaitems, such as by purchasing a media item from an online media store orby clicking a download button.

The user may choose to change the order in which the media items in thelist (or a subset thereof) are downloaded. In this example, the mediaitems are downloaded in the order in which they are listed in a top-downorder. Therefore, the user may re-prioritize the media items byperforming a drag-and-drop operation to move the media items within thelist. In this manner, the user may change the order in which the mediaitems in the list are downloaded. For instance, the order in which themedia items are placed in a corresponding queue may be modifiedaccordingly. As one example, the information corresponding to each mediaitem may be stored as an element in a linked list. Therefore, modifyingthe order of the media items in the linked list may be performed bymodifying the appropriate pointers.

It may also be desirable to change the download status of one or more ofthe media items in the list. For instance, the user may choose to startthe downloading of media items that are eligible to be downloaded (e.g.,those that have not yet been downloaded or that have been paused duringdownloading), or pause the downloading of any of the media items in thelist. Any of these operations may be performed via a user-interface suchas a button or drop-down menu.

FIG. 3 is a screen shot of a representative application program windowthat illustrates the capability of the user to control the concurrentdownloading process in accordance with one embodiment of the invention.As shown in the “Kind” column, an icon or other indicator may indicatethat the media item is a podcast episode or online media store purchase.In this example, five online store purchases have been added to the listof media items shown in FIG. 2. In addition, the user has changed theorder in which the media items are to be downloaded, as shown. Moreparticularly, although the online media store purchases have been addedto the list after the podcast episodes, two of the online storepurchases have been placed in the second and third entries in the listof media items. The user has also chosen to resume the downloading oftwo of the three podcast episodes.

As shown in this example, information may be displayed indicating theamount of the media item (e.g., file) that has been downloaded, anamount of the media item that remains to be downloaded, and/or a timeremaining to complete the downloading of the corresponding media item.Such information may be provided for each media item in the list ofmedia items, or alternatively, such information may be provided only forthose media items that are in the process of being downloaded, for whichdownloading has been paused and/or for which downloading has beenresumed.

FIG. 4 is a screen shot of a representative application program windowthat illustrates the list of media items upon completing a purchase of amedia item from an online media store in accordance with one embodimentof the invention. As described above with reference to FIG. 2, the listincluded three podcast episodes. Upon purchasing a media item from theonline media store, the media item is added to the list of media items.In this example, the new media item that has been purchased is added asthe fourth item in the list. Although in this example, the maximumnumber of media items that can be concurrently downloaded is three,since the first three items have been paused, the fourth item isdownloaded.

In accordance with one embodiment, even if a media item is dragged tore-prioritize the media item, it will not be reprioritized if it hasalready started downloading. However, once the downloading of the mediaitem has been paused, the media item will be re-prioritized.

FIG. 5 is a process flow diagram illustrating a method of performingconcurrent downloading of media assets in accordance with one embodimentof the invention. A list of media items to be downloaded is obtained oridentified at 502. Assuming that the list includes two or more mediaitems, a priority of the media items is ascertained at 504. Forinstance, the priority may easily be ascertained from a list that isread in top-down order. Two or more of the media items in the list areconcurrently downloaded according to the ascertained priority at 506.The media items that are selected to be downloaded are those that areeligible to be downloaded (e.g., not already being downloaded, paused,or having an error status). Concurrent downloading may be achieved bygenerating a separate HTTP request for each media item to be downloaded.

As the downloading of one or more of the media items completes, thedownloading of one or more additional media items may be initiated inaccordance with the ascertained priority. Thus, the completion of thedownloading of one or more media items may initiate further processingby the download manager. For instance, the download manager mayascertain the number of media items that are being concurrentlydownloaded. This may be accomplished, for example, by maintaining acounter reflecting the number of items being downloaded, which may beincremented as new items are downloaded, and decremented as thedownloading of a media item completes.

If the number of media items being downloaded is not greater than orequal to a pre-determined maximum number of media items at 508, thedownload manager may initiate the downloading of one or more additionalmedia items. However, this also depends on the number of media itemsthat remain in the list of media items. If no items remain in the listat 510, the process ends at 512.

Assuming that one or more media items remain in the list and the numberof media items being downloaded is less than the maximum number of itemsthat can be downloaded, the next prioritized media item in the list isidentified at 514. It is then determined whether the next prioritizedmedia item is eligible to be downloaded at 516. This may be accomplishedby checking the download status of the media item. For instance, if themedia item is already being actively downloaded or has been paused, themedia item is not eligible to be downloaded. As another example, anerror may have occurred during a previous attempt to download the mediaitem, resulting in an error status. If the status indicates that theitem is eligible to be downloaded at 518, downloading of the media itemis initiated at 520. As set forth above, an HTTP request may betransmitted to initiate the downloading of the media item from theserver. The number of media items that are downloading may beincremented at 522. The process continues at 508, as described above.

If a prioritized media item is not eligible to be downloaded at 518, theitem is not downloaded. If more media items remain in the list as shownat 524, the process continues at 514 for the next prioritized mediaitem. Downloading for the next prioritized media item may be initiatedif its download status indicates that the media item is eligible to bedownloaded, as described above.

Once downloading of a media item has been initiated, the user may chooseto pause the downloading. FIG. 6 is a process flow diagram illustratinga method of pausing the downloading of media assets in accordance withone embodiment of the invention. A user may choose to pause thedownloading of one or more of the media items being downloaded. Userinput is received requesting that the downloading of one or more of themedia items be paused at 602. For instance, the user may choose to pausethe downloading of a selected media item by clicking on a buttonassociated therewith. Alternatively, the user may choose to pause thedownloading of one or more media items via a drop-down menu, graphicaluser interface, or other suitable mechanism.

Upon receiving input from the user, the downloading of the one or moremedia items identified by the user is paused at 604. Informationassociated with each of the paused media items is then stored to enabledownloading at the point in the corresponding file at which thedownloading has been paused to be resumed at a later time at 606. Moreparticularly, the information indicates a point in a file correspondingto each of the paused media items at which downloading was paused. Forinstance, the information may indicate the amount (e.g., number ofbytes) of the file that has been downloaded. If the media item was anonline media store purchase, the information may also include anyrelevant store information such as the name of the media item, a uniqueidentifier identifying the media item, and/or a corresponding useraccount that the media item came from. The information may also includeinformation from corresponding HTTP headers such as an etag, datemodified, and/or MD5 checksum, which may be used to resume downloadingand/or determine whether it is possible to resume downloading.

As shown at 608, information associated with a paused media item may bedisplayed. This information may indicate the amount of the media item(e.g., file) that has been downloaded, an amount of the media item thatremains to be downloaded, and/or a time remaining to complete thedownloading of the corresponding media item.

Once the downloading of a media item has been paused, the downloadingmay be resumed. FIG. 7 is a process flow diagram illustrating a methodof resuming the downloading of a media asset that was previously pausedin accordance with one embodiment of the invention. As shown at 702,user input requesting that the downloading of one or more of thepreviously paused media items be resumed is received. The next one ofthe media items for which downloading is being resumed is identified at704. For instance, the next prioritized media item that the user hasrequested be resumed may be identified.

In accordance with one embodiment, it is determined whether thedownloading of the media item is capable of being resumed at 706. Moreparticularly, in some embodiments, it is not possible to resumedownloading certain types of media items for which downloading has beenpaused. For instance, it may be possible to pause the downloading for avideo or podcast file and resume at the point at which the downloadingwas previously paused. However, it may be impossible to pause thedownloading of a song and resume at the point at which the downloadingwas previously paused. As a result, the online media store may provideadditional information enabling a determination to be made as to whetherthe downloading can be resumed at the point at which the downloading waspreviously paused.

In accordance with one embodiment, an MD5 hashing function is used todetermine whether the resulting value matches the MD5 checksum valuethat was previously saved when the downloading was paused. If the valuesare the same, then the downloading of the file can be resumed. However,if the values are not the same, the downloading of the file cannot beresumed.

It is also possible that the media item for which downloading beingresumed has been modified since downloading was initiated. As a result,it may be desirable to determine whether a file corresponding to thepreviously paused media item for which it is requested that downloadingbe resumed is identical to the file previously downloaded at 708. Forinstance, the URL of the file, the number of bytes in the file, the lastmodified date and/or etag (if present) may be used to determine if thefile has changed since the downloading was previously initiated.

If the media item is capable of being resumed and the corresponding fileis the same (e.g., it has not been modified) at 710, a point in the fileat which downloading was previously paused is identified from theinformation that was previously saved when the downloading waspreviously paused at 712. The downloading of the previously paused mediaitem is resumed at 714. More particularly, the downloading is resumed atthe point in the file corresponding to the previously paused media itemat which downloading was previously paused. The process continues at 716for all remaining media items for which downloading is being resumeduntil the process ends at 718.

If the media item is not capable of being resumed and/or thecorresponding file is not the same (e.g., the file has been modified) at710, the downloading is initiated at the beginning of the file at 720.Of course, if the file is no longer available, an error status may beassociated with the media item. The process continues at 722 for allremaining media items for which downloading is being resumed until theprocess ends at 724.

In accordance with one embodiment, if the user chooses to exit thesystem (e.g., the online media store) before all of the media items inthe list of media items are downloaded, the list of media items may besaved to a file or other suitable data structure. For instance, when theuser exits or logs out of the online media store, the list of mediaitems may be saved. Upon re-entry to the system (e.g., online mediastore), the list of media items may be populated from the file or datastructure. For each item in the list that was previously purchased fromthe online media store, it may be determined whether the item iscurrently available from the online media store. For instance, the usermay be prompted to check if each item is still available from the onlinemedia store. If the user selects this option, the system automaticallychecks if the item is still available from the online media store. Ifthe item is no longer available from the online media store, the contentcan no longer be downloaded and the item is deleted from the list.However, if the item is still available from the online media store, theitem remains in the list.

If the user chooses not to select the checking option, the system mayattempt to download a file that is no longer available in the onlinemedia store. As a result, the download status of that media item may bechanged to “error.”

The various aspects, features, embodiments or implementations of theinvention described above can be used alone or in various combinations.The media items can pertain to podcast episodes, audio items (e.g.,audio files or songs, such as for music or audiobooks), video items(e.g., video files, television episodes or movies), or image items(e.g., photos).

The invention is preferably implemented by software, but can also beimplemented in hardware or a combination of hardware and software. Theinvention can also be embodied as computer readable code on a computerreadable medium. The computer readable medium is any data storage devicethat can store data which can thereafter be read by a computer system.Examples of the computer readable medium include read-only memory,random-access memory, CD-ROMs, DVDs, magnetic tape, optical data storagedevices, and carrier waves. The computer readable medium can also bedistributed over network-coupled computer systems so that the computerreadable code is stored and executed in a distributed fashion.

The advantages of the invention are numerous. Different embodiments orimplementations may, but need not, yield one or more of the followingadvantages. One advantage of the invention is that media items are ableto be concurrently downloaded to a user's machine. Another advantage ofthe invention is that the downloading of media items can be controlledby a user. For instance, the user may modify the order in which themedia items are downloaded. As another example, the user may modify thedownload status of one or more media items. For instance, the user mayinitiate the downloading of one or more media items that are eligiblefor downloading, pause the downloading of one or more media items thatare downloading, or resume the downloading of one or more media itemsfor which downloading has previously been paused.

The many features and advantages of the present invention are apparentfrom the written description and, thus, it is intended by the appendedclaims to cover all such features and advantages of the invention.Further, since numerous modifications and changes will readily occur tothose skilled in the art, the invention should not be limited to theexact construction and operation as illustrated and described. Hence,all suitable modifications and equivalents may be resorted to as fallingwithin the scope of the invention.

What is claimed is:
 1. A method comprising: identifying a list of mediaitems; ascertaining a priority of media items in the list of mediaitems; downloading, via a computing device over a network, media itemsin the list of media items according to the priority; pausing, via thecomputing device, the downloading of a media item being downloaded, thedownloading of the media item being paused at a pause position in themedia item corresponding to a current download point in the media itemwhen a pause request was received; and resuming, via the computingdevice, the downloading of the media item from the pause position. 2.The method as recited in claim 1, wherein each of the media items is apodcast episode or an item purchased from an online media store, andwherein downloading media items comprises concurrently downloading atleast two media items.
 3. The method as recited in claim 1, whereinpausing the downloading comprises: determining a size of a portion ofthe media item already downloaded when the pause request was received;and storing an indication of the pause position, the indication beingbased on the size of the portion of the media item.
 4. The method asrecited in claim 1, wherein the downloading includes generating aseparate HTTP request for each of the media items being downloaded. 5.The method as recited in claim 1, wherein the resuming comprises:determining whether the downloading of the at least one of the mediaitems can resume based on a media item type associated with the at leastone of the media items and a checksum value associated with the at leastone of the media items; and resuming the downloading from the pauseposition when the media item type is capable of being resumed and thechecksum value matches a previous checksum value associated with the atleast one of the media items, wherein the pause position is determinedbased on a data size of a portion of the at least one of the media itemsthat completed downloading prior to the pausing.
 6. The method asrecited in claim 1, further comprising: re-prioritizing the media itemsin the list of media items in response to a user selection.
 7. Themethod as recited in claim 1, wherein downloading media items comprisesconcurrently downloading at least two media items, and wherein apredetermined maximum number of media items are able to be concurrentlydownloaded.
 8. The method as recited in claim 1, wherein the methodcomprises: determining whether a next prioritized media item in the listof media items is eligible to be downloaded, wherein the nextprioritized media item is downloaded if it is determined that it iseligible to be downloaded.
 9. The method as recited in claim 8, whereindetermining whether a next prioritized media item in the list of mediaitems is eligible to be downloaded comprises: ascertaining whether astatus of the next prioritized media item in the list of media itemsindicates that the next prioritized media item is already beingdownloaded, that the next prioritized media item has been paused, orthat an error has occurred.
 10. The method as recited in claim 1,further comprising, after a download of one of the media items beingdownloaded has completed, initiating downloading of another one of themedia items in the list of media items according to the ascertainedpriority.
 11. The method as recited in claim 1, further comprising:saving the list of media items to a file or data structure upon exitingan online media store.
 12. The method as recited in claim 11, furthercomprising: populating the list of media items from the file or the datastructure upon re-entering the online media store.
 13. The method asrecited in claim 1, wherein each media item in the list of media itemshas a download status, the method further comprising: providing thedownload status associated with each media item in the list of mediaitems.
 14. The method as recited in claim 1, further comprising:displaying information indicating at least one of an amount of the mediaitem that has been downloaded, an amount of the media item that remainsto be downloaded, or a time remaining to complete downloading of thecorresponding media item.
 15. A non-transitory computer readable mediumhaving stored therein instructions which, when executed by a processor,cause the processor to perform operations comprising: obtaining a listof media items; ascertaining a priority of media items in the list ofmedia items; downloading, via a computing device over a network, mediaitems in the list of media items according to the ascertained priority;pausing, via the computing device, the downloading of at least one ofthe media items being downloaded, the pausing being at a pause positioncorresponding to a current download position when a pause request wasidentified; and resuming, via the computing device, the downloading ofthe at least one previously paused media item from the pause position.16. An apparatus: a processor; and a computer-readable device havingstored therein instructions which, when executed by the processor, causethe processor to perform operations comprising: identifying a list ofmedia items to be downloaded to a recipient computing device;ascertaining a priority of media items in the list of media items; anddownloading, via a computer network, media items in the list of mediaitems according to the ascertained priority.
 17. An apparatus as recitedin claim 16, computer-readable device storing additional instructionswhich, when executed by the processor, result in an operation furthercomprising displaying status information pertaining to download of themedia items.
 18. An apparatus as recited in claim 16, whereindownloading comprises concurrently downloading at least two media itemsfrom the list of media items.
 19. An apparatus as recited in claim 16,the computer-readable device storing additional instructions which, whenexecuted by the processor, result in an operation further comprisingpausing a download of at least one of the media items being download,wherein the at least one of the media items being downloaded is pausedat a pause position corresponding to a current download position of theat least one of the media items being downloaded associated with a pauserequest.
 20. An apparatus as recited in claim 19, the computer-readabledevice storing additional instructions which, when executed by theprocessor, result in an operation further comprising resuming thedownload of the at least of the media items paused from the pauseposition.
 21. A system comprising: a processor; and a computer-readablemedium having stored therein instructions which, when executed by theprocessor, cause the processor to perform operations comprising:identifying a list of media items to be downloaded to a recipientcomputing device; downloading, to the recipient computing device over anetwork, media items in the list of media items; pausing the downloadingof at least one of the media items being downloaded, the at least one ofthe media items being paused at a pause position corresponding to acurrent download amount of the at least one of the media items when apause request was received; and resuming the downloading of the at leastone of the media items from the pause position.